package valueObject;

import entity.Formulario;
import entity.PuntoDeEncuentro;
import entity.TipoDeContratacion;
import entity.UsuarioRegistrado;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class FormularioVO implements ValueObject<Formulario> {

    private int id;
    private Calendar fechaInicio;
    private Calendar fechaFinal;
    private boolean tieneAcompanante;
    private int cantidadDeAcompanante;
    private String contenidoExtra;
    
    private List<PuntoDeEncuentroVO> puntosDeEncuentro;
    
    private ActividadVO actividad;
    
    private List<TipoDeContratacionVO> tiposDeContratacion;
    
    private List<UsuarioRegistradoVO> usuariosRegistrados;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Calendar getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Calendar fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Calendar getFechaFinal() {
        return fechaFinal;
    }

    public void setFechaFinal(Calendar fechaFinal) {
        this.fechaFinal = fechaFinal;
    }

    public boolean isTieneAcompanante() {
        return tieneAcompanante;
    }

    public void setTieneAcompanante(boolean tieneAcompanante) {
        this.tieneAcompanante = tieneAcompanante;
    }

    public int getCantidadDeAcompanante() {
        return cantidadDeAcompanante;
    }

    public void setCantidadDeAcompanante(int cantidadDeAcompanante) {
        this.cantidadDeAcompanante = cantidadDeAcompanante;
    }

    public String getContenidoExtra() {
        return contenidoExtra;
    }

    public void setContenidoExtra(String contenidoExtra) {
        this.contenidoExtra = contenidoExtra;
    }

    public List<PuntoDeEncuentroVO> getPuntosDeEncuentro() {
        return puntosDeEncuentro;
    }

    public void setPuntosDeEncuentro(List<PuntoDeEncuentroVO> puntosDeEncuentro) {
        this.puntosDeEncuentro = puntosDeEncuentro;
    }

    public ActividadVO getActividad() {
        return actividad;
    }

    public void setActividad(ActividadVO actividad) {
        this.actividad = actividad;
    }

    public List<TipoDeContratacionVO> getTipoDeContratacion() {
        return tiposDeContratacion;
    }

    public void setTipoDeContratacion(List<TipoDeContratacionVO> tipoDeContratacion) {
        this.tiposDeContratacion = tipoDeContratacion;
    }

    public List<UsuarioRegistradoVO> getUsuariosRegistrados() {
        return usuariosRegistrados;
    }

    public void setUsuariosRegistrados(List<UsuarioRegistradoVO> usuariosRegistrados) {
        this.usuariosRegistrados = usuariosRegistrados;
    }

    @Override
    public Formulario toEntity() {
        Formulario formulario = new Formulario();
        formulario.setActividad(actividad.toEntity());
        formulario.setCantidadDeAcompanante(cantidadDeAcompanante);
        formulario.setContenidoExtra(contenidoExtra);
        formulario.setFechaFinal(fechaFinal);
        formulario.setFechaInicio(fechaInicio);
        formulario.setId(id);
        formulario.setTieneAcompanante(tieneAcompanante);
        
        if (puntosDeEncuentro != null) {
            List<PuntoDeEncuentro> puntoDeEncuentroE = new ArrayList<PuntoDeEncuentro>();
            for (PuntoDeEncuentroVO puntoDeEncuentro : puntosDeEncuentro) {
                puntoDeEncuentroE.add(puntoDeEncuentro.toEntity());
            }
            formulario.setPuntosDeEncuentro(puntoDeEncuentroE);
        } else {
            formulario.setPuntosDeEncuentro(new ArrayList<PuntoDeEncuentro>());
        }
        
        if (tiposDeContratacion != null) {
            List<TipoDeContratacion> tipoDeContratacionE = new ArrayList<TipoDeContratacion>();
            for (TipoDeContratacionVO tipoDeContratacion : tiposDeContratacion) {
                tipoDeContratacionE.add(tipoDeContratacion.toEntity());
            }
            formulario.setTipoDeContratacion(tipoDeContratacionE);
        } else {
            formulario.setTipoDeContratacion(new ArrayList<TipoDeContratacion>());
        }
        
        if (usuariosRegistrados != null) {
            List<UsuarioRegistrado> usuariosRegistradosE = new ArrayList<UsuarioRegistrado>();
            for (UsuarioRegistradoVO usuarioRegistrado : usuariosRegistrados) {
                usuariosRegistradosE.add(usuarioRegistrado.toEntity());
            }
            formulario.setUsuariosRegistrados(usuariosRegistradosE);
        } else {
            formulario.setUsuariosRegistrados(new ArrayList<UsuarioRegistrado>());
        }
        
        return formulario;
    }
}